#ifndef MOVESTEPCALCULATOR_H
#define MOVESTEPCALCULATOR_H

#include "StepCalculator.h"
#include "GameObject.h"
#include "Direction.h"
#include "MoveStep.h"
#include "Movable.h"

class MoveStepCalculator: public StepCalculator
{
public:
	MoveStepCalculator();
	virtual ~MoveStepCalculator();

	void SetInitialObject(GameObject* object, const Direction& direction);
	void SetInitialCell(Cell& cell, const Direction& direction);
	virtual void GenerateSteps(Board& board);
	virtual void Execute();
	
	bool IsEmpty() const;

	void Clear();
	void AddStep(GameObject* object, Movable* movable, Board* board);

protected:

private:


	GameObject* movingObject;
	Cell* initialCell;
	Direction movingDirection;

	std::list<Step*> steps;
};

#endif //MOVESTEPCALCULATOR_H
